/*
 * Copyright (c) 2020-2099 the original author or authors. All rights reserve.
 */
package org.tianyun.cloud.data.redis.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 启用Redis缓存
 *
 * @auther ebert_chan
 */
@Target(value = {ElementType.METHOD})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface FlushCache {

    /**
     * 缓存key，变量可以使用{0}, {1}...{N}占位
     *
     * @return
     * @auther ebert_chan
     */
    String key() default "";

    /**
     * 变量列表，使用SpEL表达式
     *
     * @return
     * @auther ebert_chan
     */
    String[] variables() default {};

    /**
     * 清理一批缓存key
     *
     * @return
     * @auther ebert_chan
     */
    Key[] value() default {};

    /**
     * @auther ebert_chan
     */
    public @interface Key {

        /**
         * 缓存key，变量可以使用{0}, {1}...{N}占位
         *
         * @return
         * @auther ebert_chan
         */
        String key();

        /**
         * 变量列表，使用SpEL表达式
         *
         * @return
         * @auther ebert_chan
         */
        String[] variables() default {};

    }

}
